import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 创建极坐标系网格
r = np.linspace(0.1, 2, 1000)  # 径向距离，避免r=0的奇点
theta = np.linspace(0, 2*np.pi, 1000)  # 角度范围
R, Theta = np.meshgrid(r, theta)

# 电流参数设置
t = 0  # 观察时间点
omega = 1  # 角频率
I0 = 1  # 基频电流振幅
I3 = 0.2  # 三倍频电流振幅，设置为基频的50%以体现增强效果

# 磁场计算
# 基频磁场(各向同性，仅与距离成反比)
B_base = (I0 * np.sin(omega * t) / R)
# 含三倍频增强的磁场(角度相关调制)
B_harmonic = (I0 * np.sin(omega * t) / R)  + (I3/I0) * np.cos(3 * Theta)

# 创建对比图形
fig, (ax1, ax2) = plt.subplots(1, 2, subplot_kw={'projection': 'polar'}, figsize=(16, 8))

# 设置统一的颜色范围，便于对比
vmin, vmax = np.min(B_harmonic), np.max(B_harmonic)

# 绘制纯基频磁场分布
c1 = ax1.pcolormesh(Theta, R, B_base, cmap='viridis', shading='auto', vmin=vmin, vmax=vmax)
fig.colorbar(c1, ax=ax1, label='磁场强度 (相对值)')
ax1.set_title('纯基频电流的磁场分布', fontsize=14)
ax1.set_rlabel_position(22.5)  # 调整径向标签位置

# 绘制含三倍频增强的磁场分布
c2 = ax2.pcolormesh(Theta, R, B_harmonic, cmap='viridis', shading='auto', vmin=vmin, vmax=vmax)
fig.colorbar(c2, ax=ax2, label='磁场强度 (相对值)')
ax2.set_title('含3倍频增强效果的磁场分布', fontsize=14)
ax2.set_rlabel_position(22.5)

# 添加整体标题
plt.suptitle('线电流磁场极坐标分布对比: 基频 vs 三倍频增强', fontsize=16, y=1.05)
plt.tight_layout()
plt.show()3